package org.trebert.web;

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

/**
 * @author pascal trebert
 *
 */
public class ArithmetikServlet extends HttpServlet {
	private static final long serialVersionUID = -7770863632581451469L;
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		// Session Attribute anlegen, gemachte Additionsaufgaben, gemachte Multiplikationsaufgaben
		
		// Lese Context-Parameter aus web.xml aus
		ServletConfig sconfig = this.getServletConfig();
		Integer anzAdd = Integer.parseInt(sconfig.getInitParameter("anz_add"));
		Integer anzMul = Integer.parseInt(sconfig.getInitParameter("anz_mul"));
		PrintWriter out = response.getWriter();
		
		// ServletContext holen zum loggen
		ServletContext scontext = this.getServletContext();
				
		// session vom request-objekt holen, lege neu an falls nicht vorhanden
		HttpSession session = request.getSession(true);		
		
		// Rundenzaehler, markiert auch 1. Runde in der einige session Attribute noch fehlen
		Integer round = session.getAttribute("round") != null ? (Integer) session.getAttribute("round") : 0;
		
		if (round!=0){ // fuer alle Runden ausser der ersten
			// FIXME userAnswer ist null
			scontext.log("userAnswer ist: " + request.getParameter("userAnswer"));
			String userAnswerString = request.getParameter("userAnswer");
			Integer userAnswer = Integer.parseInt(userAnswerString); 
			Integer correctAnswers = (Integer) session.getAttribute("correctAnswers");
			Integer correctResult = (Integer) session.getAttribute("correctResult");
			session.setAttribute("correctAnswers", userAnswer==correctResult ? correctAnswers+1 : correctAnswers);
		}
		session.setAttribute("round", round+1); // 1. Runde steht auf 0 wird ohne durchlauf auf 1 gesetztn
		
		// dispatche auf zustaendige Servlets
		RequestDispatcher rd = null;
		if (round<=anzAdd){
			rd = request.getRequestDispatcher("/AddServlet");
		}else if(round <= anzAdd+anzMul){		
			request.getRequestDispatcher("/MulServlet");
		}
		rd.forward(request, response);
		
		// Ergebnis ausgeben				
		out.print("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
		out.print("<html>\n");
		out.print("<head>\n");
		out.print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
		out.print("<title>Webanwendung Ergebnisseite</title>\n");
		out.print("</head>\n");
		out.print("<body>\n");
		out.print("Du hast Aufgaben richtig!<br />\n");		
		out.print("</body>\n");
		out.print("</html>\n");
				
//		RequestDispatcher dispatcher = request.getRequestDispatcher("AddServlet");
//		dispatcher.forward(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		doGet(request, response);
	}
	
}